package com.nf.db.handler;

import com.nf.db.DefaultRowProcessor;
import com.nf.db.ResultSetHandler;
import com.nf.db.RowProcessor;

import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;

import static com.nf.db.RowProcessor.DEFAULT_ROWPROCESSOR;

/**
 * 此Handler是把数据库的第一条记录用数组来存放
 */
public class ArrayHandler implements ResultSetHandler<Object[]> {

    /**
     * 尽量如要返回null，以避免空引用异常
     * 它是个常量，所以名字必须全大写，单词之间用下划线分开
     */
    private static final Object[] EMPTY_ARRAY = new Object[0];


    @Override
    public Object[] handle(ResultSet rs) throws SQLException {
        //因为只取第一条记录，所以仍然是if()而不是while
        if (!rs.next()) return EMPTY_ARRAY;

        return DEFAULT_ROWPROCESSOR.toArray(rs);
    }
}
